package com.powerbank.usercenter.dto;

import lombok.Data;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;

/**
 * 用户登录DTO
 */
@Data
public class UserLoginDTO {
    
    /**
     * 手机号
     */
    @NotBlank(message = "手机号不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone;
    
    /**
     * 密码
     */
    @Size(min = 6, max = 20, message = "密码长度必须在6-20位之间")
    private String password;
    
    /**
     * 短信验证码
     */
    @Size(min = 6, max = 6, message = "短信验证码必须为6位数字")
    private String smsCode;
    
    /**
     * 登录IP
     */
    private String loginIp;
    
    /**
     * 账号（兼容旧字段）
     */
    private String account;
    
    /**
     * 登录类型（PHONE/EMAIL）
     */
    private String loginType;
    
    /**
     * 认证类型（PASSWORD/SMS）
     */
    private String authType;
    
    /**
     * 获取账号（兼容旧代码）
     */
    public String getAccount() {
        return account != null ? account : phone;
    }
    
    /**
     * 获取登录类型（兼容旧代码）
     */
    public String getLoginType() {
        return loginType != null ? loginType : "PHONE";
    }
    
    /**
     * 获取认证类型（兼容旧代码）
     */
    public String getAuthType() {
        return authType != null ? authType : (password != null && !password.isEmpty() ? "PASSWORD" : "SMS");
    }
}
